Разделение/партиционирование данных на части/отдельные сервера

Шард - малая таблица с частью данных

Вертикальный - выделение целых таблиц на отдельный сервер

Горизонтальный - разделение одной таблица на разные сервера. Для огромных таблиц. Нужно выбрать по какому параметру разделяем. Когда несколько миллионов записей в таблице

Стратегии

  • Диапазон (range): простая логика, но риск горячих партиций на «хвостах».

  • Хеш (hash): равномерная нагрузка, но сложнее диапазонные запросы.

  • Consistent hashing: облегчает ребаланс при добавлении узлов.

  • По признаку/гео/клиенту: когда важна локальность данных.

Индексы и запросы

  • Вторичные индексы на шардах: локальные (дешево, но поиск по всем шардам) или глобальные (дорого сопровождать).

  • Scatter-gather: запрос ходит на все шарды — избегать в критичных путях.

Ребаланс

  • Стратегия движения данных (перенос диапазонов/слотов), лимиты на трафик.

  • Версии схем и миграции под шардинг (идемпотентные).

Документировать

  • Ключ шардирования и аргументы выбора.

  • План роста: сколько шардов, когда добавляем, как переносим.

  • Ограничения: кросс-шардовые транзакции/джоины, требования к консистентности.

Последнее обновление